package com.ruoyi.module.service;

import java.util.List;

import com.ruoyi.module.domain.DictBookUser;

/**
 * 词典用户关联Service接口
 * 
 * @author ruoyi
 * @date 2025-10-27
 */
public interface IDictBookUserService 
{
    /**
     * 查询词典的授权用户列表
     * 
     * @param bookId 词典ID
     * @return 词典用户关联列表
     */
    public List<DictBookUser> selectDictBookUserListByBookId(String bookId);

    /**
     * 查询用户的授权词典列表
     * 
     * @param userId 用户ID
     * @return 词典用户关联列表
     */
    public List<DictBookUser> selectDictBookUserListByUserId(Long userId);

    /**
     * 检查用户是否有词典权限
     * 
     * @param bookId 词典ID
     * @param userId 用户ID
     * @return true表示有权限，false表示无权限
     */
    public boolean checkUserBookPermission(String bookId, Long userId);

    /**
     * 为词典批量添加用户
     * 
     * @param bookId 词典ID
     * @param userIds 用户ID数组
     * @param createBy 创建者
     * @return 结果
     */
    public int batchInsertDictBookUser(String bookId, Long[] userIds, String createBy);

    /**
     * 删除词典的指定用户
     * 
     * @param bookId 词典ID
     * @param userIds 用户ID数组
     * @return 结果
     */
    public int deleteDictBookUserByBookIdAndUserIds(String bookId, Long[] userIds);

    /**
     * 删除词典的所有用户
     * 
     * @param bookId 词典ID
     * @return 结果
     */
    public int deleteDictBookUserByBookId(String bookId);

    /**
     * 为新用户分配所有免费词典
     * 
     * @param userId 用户ID
     * @return 分配的词典数量
     */
    public int assignFreeDictBooksToUser(Long userId);
}

